What Is Git?
Git is a distributed version control system used to track changes to files and collaborate on projects. It lets you record snapshots of your code over time and synchronize work across different machines and teammates.
Core Concepts
- Repository: A project folder containing a hidden
.gitdirectory with all history. - Staging area: Where you prepare changes using
git addbefore committing. - Commit: A recorded snapshot of your files, with a message and link to previous commits.
- Branch: A movable pointer to a sequence of commits (e.g.,
main,feature-x). - Merge: Combines work from different branches into one history.
- Remote: A shared copy of the repository (e.g., GitHub, GitLab) used with
git pushandgit pull.
How Git Works (High Level)
- Git stores your project as a series of snapshots, not just line-by-line diffs.
- Each commit points to a tree of files and to one or more parent commits, forming a history graph.
- Branches are simply labels pointing to commits, which move forward as you commit.
- Pushing and pulling sync the commit history between your local repo and remotes.
Now get to the real work. How to Download a Git Repository to Your Local Disk (Command Line)
1. Go to the Folder Where We Want the Repo
Use cd to move into the directory where we want to download the repository:
cd /path/
Example on macOS or Linux:
cd ~/Documents/projects
2. Clone the Repository
HTTPS Method (Most Common)
git clone https://github.com/username/repository.git
SSH Method (If Have SSH Keys Set Up)
git clone git@github.com:username/repository.git
GitLab Example (MIT GitLab)
git clone https://gitlab.cba.mit.edu/classes/863.25/people/YuWang.git
3. What Happens After Cloning?
Git creates a new folder with the same name as the repository:
YuWang/
├── .git/
├── index.html
├── Week1/
└── ...
We now have:
- The full project files
- The full commit history
- A local working copy on which we can edit
4. Optional: Shallow Clone (Without Full History)
If the repository is huge and we just want the latest snapshot, use a shallow clone:
git clone --depth 1 <repo-url>
This behaves more like a “zip download” of the latest state.
5. Download as ZIP Using Command Line (GitHub Example)
If we really don’t want to use git clone, we can download the repository as a ZIP:
curl -L -o repo.zip https://github.com/username/repository/archive/refs/heads/main.zip
unzip repo.zip
Difference Between SSH and HTTPS in Git
| Feature | SSH | HTTPS |
|---|---|---|
| Authentication Method | Uses SSH keys (public/private key pair) | Uses username + password or token |
| Security Level | Very secure (key-based encryption) | Secure but relies on proper token/password handling |
| Ease of Use | Easy after keys are set up; no username/password prompts | Easiest to start; may ask for password/token often |
| Setup Required | Must generate SSH keys & add to GitHub/GitLab | No setup needed; works out-of-the-box |
| Typical Clone URL | git@github.com:username/repo.git |
https://github.com/username/repo.git |
| Works Behind Corporate Firewalls? | Sometimes blocked (port 22) | Almost always works (port 443) |
| Credential Storage | Keys stored locally; no prompts | Uses credential helpers or repeated login |
| Recommended For | Developers pushing/pulling frequently | Beginners or restricted networks |
Challenges:
Nothing is really difficult except getting used to the commandline interface takes time.
Also, a bit confused about adding, then committing, and then pushing
So far, I’ve had a few incidents where I couldn’t push my updates to the site. Some were due to logistical issues—for example, I tried multiple times and still ran into problems pushing changes before class began. Another time, I believe I manually updated the repository using the GUI, and when I later tried to push through the command line, it showed conflicts. Until now, I’ve managed to resolve all these issues without consulting anyone except ChatGPT.
- git add . : put changed item up somewhere?
- git commit -m "*message" :put changed item into the pipeline to upload?
- git push :move the changed file to the repo and changes take effect.
Exceeding the maximum allowable upload file size: One thing I ran into is that when I tried to upload files that are larger than 25 MB(combined) and failed. It took me a while to fix this issue because it was already commited. To fix it:
git reset --soft HEAD~1
git restore --staged path/to/bigfile
rm path/to/bigfile # if you don’t want it in the repo at all
git commit -m "Commit without large file"
| Command | What it does | Effect on your repo (mental model) |
|---|---|---|
git reset --soft HEAD~1 |
Moves HEAD (your branch pointer) back by 1 commit, but keeps all changes from that commit
in the staging area.
|
“Undo the last commit, but keep everything staged exactly as if you were about to recommit.” |
git restore --staged path/to/bigfile |
Removes only that file from the staging area (index). The file still remains in your working folder. | “Keep all other changes staged, but don’t include this big file in the next commit.” |
rm path/to/bigfile |
Deletes the file from your local working directory (your filesystem). Optional: do this only if you don’t need the file locally. | “Remove the big file from disk so it won’t get re-added accidentally.” |
git commit -m "Commit without large file" |
Creates a new commit using whatever is currently staged. Since the big file was unstaged, it won’t be included. | “Make a clean commit that includes everything you want, excluding the big file.” |
Update on Dec 6, 2025
It's been a long way. One interest fact I realized is after comparing with people in the group, my number of commit is way higher than my peers (92 times and counting!). I wonder why...
Update on Dec 9, 2025
As this class winds down, I’ve been giving this site a bit of extra polish. Partly because future generation might wander in here looking for clues on how to do something similar, and partly because a project this intense deserves a halfway decent outfit. I want this space to be something between a survival guide, a record of things that worked (and definitely things that didn’t), and a pleasant place to scroll through without regret. I even added a tiny visitor counter and time tracker— not to chase numbers, but so future-me can come back one day and see whether anyone else ever fell into this rabbit hole. If this page helps you, inspires you, or at least reassures you that confusion is part of the process… then it’s doing its job.
For the counter I am using wrangler on my terminal, which is a CLI tool for Cloudflare Workers. I created a simple worker script that increments a counter stored in Cloudflare's KV storage each time the page is loaded. Then, I embedded the counter value into the HTML of my site using JavaScript to fetch the current count from the worker endpoint and display it dynamically on the page. This part is running out side of the website and should it fail one day(like Cloudflare went down or something), it would not affect the main functionality of the site.
My font for the header is "Luckiest Guy", don't have an opinion about its aesthetics but I do like the name. Google font has so many interesting fonts to choose from, something worth of digging into in the future.
Vinyl Cutter - Computer Controlled Cut
Vinyl Cutting Workflow (Roland)
This is the step-by-step process I followed to cut vinyl using the Roland cutter and mods.I downloaded MIT logo file from the MIT website. And I selected the PNG file for this cutting.
1. Open Mods & Load the Program
- Go to modsproject.org.
- Open the program: Programs → Roland Vinyl Cutter (Cut).
- Work through the modules roughly (Remember to calculate)top to bottom, left to right.
2. Prepare the Image
File Requirements
- Supported formats: .svg and .png (SVG was recommended for cleaner edges).I tried PNG version of MIT logo, depends on the color of the logo file, red color logo seems to work fine
- Use a black and white image (black regions indicate where the cutter will trace).
Scaling
- Adjust the final size using the DPI or dimension fields.
-
For SVG files, scaling is geometric and generally clean.
For PNG files, changing DPI effectively rescales pixels and can distort curved edges, so adjust carefully.
Preview & Toolpaths
- Use the invert option if you want to reverse which regions are cut.
- If the cut preview does not appear, click Calculate in the Raster / Cut module to regenerate toolpaths.
3. Set Up the Vinyl Cutter
Connect & Initialize
- Click Get Device → Connect in mods.
- Make sure the vinyl cutter is powered on.
Load the Vinyl
- Lift the lever on the back to release the pinch rollers and adjust.
- Insert the vinyl so it is aligned straight along the front edge.
- Slide the pinch rollers so they sit within the white-marked regions on the rail.
- Lower the lever to clamp the vinyl in place.
- On the machine, select SHEET (for a sheet of vinyl) and press Enter so it can measure the material.
Set the Origin
- Use the arrow keys on the machine to move the cutter head to your desired starting point.
- Press and hold Origin to set the new origin.
Force, Speed & Preview
- Default cut force is usually fine for standard vinyl.(I did not change this setting during my own cut, it seems to work perfectly)
- If the cut does not go through the vinyl, slightly increase the force; if it cuts into the backing, decrease it.
- In the mods preview: blue lines are cut paths; red lines are rapid (non-cutting) moves.
Send the Job
- Verify size, orientation, and origin in mods.
- When ready, click Send File to start cutting.
4. Weed the Vinyl
- Weed the vinyl soon after cutting; it peels more easily.
- Remove the unwanted areas first (background for stickers, interior shapes for stencils).
- Instead of pulling straight up, it would be easier to do it with an angle, or start from different point.
- Decide whether the result is a:
- Sticker (Remove the background and keep the shapes), or
- Stencil (Remove the shapes and keep the background).
5. Transfer the Vinyl
- Apply a piece of transfer tape on top of the weeded vinyl.
- Use a squeegee or card to press the tape down and push out air bubbles.
- Flip it over and carefully peel off the backing, leaving the vinyl stuck to the transfer tape.
- Align design on the final surface.
- Avoid dropping the whole sticker flat at once—start from one edge and squeegee gradually across to prevent air bubbles.
- Once it is fully adhered, peel off the transfer tape, leaving the vinyl on the surface.
Laser Cutter Individual Project – How to Make
Some basics about laser cutting
1. Prepare the File in the Software
- Open the vector file (AI, DXF, PDF, SVG, etc.).
- Set lines to cut as hairline (e.g., 0.001").
- Set lines to engrave as thicker strokes.
- Check that colors map to the correct operations (e.g., red = cut, black = engrave).
- Use zoom in / zoom out to check geometry and confirm it fits in the material area.
2. Open the Print Dialog
- Press Ctrl + P (Windows) or Command + P (Mac).
- Select the Universal Laser System as the printer.
- Open Printer Properties / Setup to access the ULS control panel.
3. Set Material and Power
- In the ULS control panel, choose the material from the library, or switch to manual control.
- Adjust Power, Speed, and PPI/Hz as needed.
- For test cuts, start with faster speed and lower power, and increase power until the material cuts cleanly.
- Click Apply and OK, then Print / Send to Laser to send the job.
4. Set the Focus with the Focusing Stick
- Open the laser cutter lid and place the material flat on the bed.
- Press the Z button on the machine panel to adjust bed height.
- Use the focusing stick under the laser head and raise/lower the bed until it just touches the lens housing.
- Remove the focusing stick and close the lid.
5. Prepare for Cutting
- Turn on or verify the air assist / air compressor is running.
- Ensure the exhaust system is on.
- Confirm the laser cover is fully closed.
- Clear the workspace of any loose materials or scraps.
6. Start the Job
- On the ULS control console, select the job in the queue.
- Press the Start / green button on the laser cutter to begin the cut.
7. Monitor the Job
- Stay with the machine while it runs—never leave it unattended.
- Watch for excessive flames, smoke, or shifting material.
- If anything looks unsafe, press Stop immediately.
Kerf Test before Laser Cutting.